"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/2/24 8:42
@Description : 学生信息管理系统

功能：
   1. 查询学生列表
   2. 增加学生信息
   3. 删除学生信息
   4. 修改学生信息
   5. 查询学生信息     根据学号查询单个学生信息
   6. 退出系统
分析 ：
    1.  用户选择对应的功能序号  执行对应的业务
         分支结构   match   case
    2.  用户输入0  返回菜单列表    循环   break  continue
    3.  完善每个分支业务
    4.  数据如何存储    学生信息
         数据容器
              变量   列表  元组  集合  字典
         如何选择容器？
              数据个数       多个     列表
           每个学生信息    姓名   学号  年龄   性别   班级   ->  字典      key:value

 python
    1. web  java python
        流程：
           1.需求分析    E-R模型图  参与的实体  属性  -> 字段
           2.设计表     关系型数据库  oracle  mysql   数据库工程师
           3.架构设计
               c/s     client  / server    客户端   服务器   QQ  wechat
               b/s     browser / server    浏览器  服务器   校园网   淘宝 京东      主流
                   PC端
                   移动端  app   微信小程序   手机  Pad
           4. 技术选型
              前端   html  css  js   主流框  vue  elementUI  前端工程师
              后端   java  python     python工程师

              前端  ：  开发页面  ->  UI设计稿 -> 用户确认    UI设计师
              后端： 根据前端需求设计 完成代码编写    登录认证
          5. 测试
              测试实现的功能是否满足用户需求   测试工程师
          6. 项目上线
              部署服务器环境  实现项目的打包部署     运维工程师
    2. 数据分析
    3. 大数据
    4. 人工智能  AI
"""

#  使用列表存储学生信息  每个学生信息使用字典存储
student_list = [
    {
        'student_id': '202502001',
        'student_name': '张三',
        'age': 20,
        'sex': '男',
        'class': 'python2511'
    }
]

while True:

    print('*' * 10, '欢迎使用学生信息管理系统', '*' * 10)
    print('1. 查询学生列表')
    print('2. 增加学生信息')
    print('3. 删除学生信息')
    print('4. 修改学生信息')
    print('5. 查询学生信息')
    print('6. 退出系统')
    print('*' * 42)

    # 提示用户选择功能
    user_choice = input('请选择功能序号:')
    #  判定用户选择  进入不同的分支
    match user_choice:
        case '1':
            print('*' * 10, '查询学生列表', '*' * 10)
            '''
                遍历学生列表
                列表 ->  元素  ->  字典  
            '''
            print('学号\t\t\t', '姓名\t\t', '年龄\t\t', '性别\t\t', '班级\t\t')
            for student in student_list:
                print(
                    f'{student["student_id"]} \t{student["student_name"]} \t\t {student["age"]}\t\t\t {student["sex"]} \t\t {student["class"]}')
        case '2':
            print('*' * 10, '增加学生信息', '*' * 10)
            '''
                1. 接收用户输入学生信息
                2. 将数据保存在字典中
                3. 将字典追加到列表中
            '''
            while True:
                student_id = input('请输入学号:')
                # 遍历学生信息列表
                for student in student_list:
                    # student  字典  'student_id'  in  student      202502001    in   student
                    if student_id == student['student_id']:
                        print('您输入的学号已存在,请重新输入')
                        break
                else:
                    break
            student_name = input('请输入姓名:')
            age = int(input('请输入年龄:'))
            sex = input('请输入性别:')
            clazz = input('请输入班级:')
            # 保存学生信息到字典
            student_dict = {
                'student_id': student_id,
                'student_name': student_name,
                'age': age,
                'sex': sex,
                'class': clazz
            }
            # 将学生信息字典追加到student_list
            student_list.append(student_dict)
            print(f'学生信息添加成功,学号:{student_id},姓名:{student_name},年龄:{age},性别:{sex},班级:{clazz}')
        case '3':
            print('*' * 10, '删除学生信息', '*' * 10)
            student_id = input('请输入删除学生的学号:')
            # 从student_list中删除  指定学号的字典
            for student in student_list:
                if student_id == student['student_id']:
                    student_list.remove(student)
                    print(
                        f'学生信息删除成功,删除的学生：学号:{student['student_id']},姓名:{student['student_name']},年龄:{student['age']},性别:{student['sex']},班级:{student['class']}')
                    break
            else:
                print('删除失败,您输入的学号不存在!')
        case '4':
            print('*' * 10, '修改学生信息', '*' * 10)
            student_id = input('请输入学生的学号:')
            # 遍历修改的学生是否存在
            for student in student_list:
                if student_id == student['student_id']:
                    # 修改的学生存在  提示用户输入需要修改的属性  key    name
                    student_attr = input('请输入您需要修改的属性:')
                    if student_attr in student:
                        #  提示用户输入属性值
                        student_attr_new_value = input('请输入您需要修改的属性值:')
                        student[student_attr] = student_attr_new_value
                        print(
                            f'学生信息修改成功,学号:{student['student_id']},姓名:{student['student_name']},年龄:{student['age']},性别:{student['sex']},班级:{student['class']}')
                        break
                    else:
                        print('您修改的属性不存在')
                        break
            else:
                print('修改失败,您输入的学号不存在!')

        case '5':
            print('*' * 10, '查询学生信息', '*' * 10)
            student_id = input('请输入需要查询的学生学号:')
            for student in student_list:
                if student_id == student['student_id']:
                    print(
                        f'学生信息查询成功,学号:{student['student_id']},姓名:{student['student_name']},年龄:{student['age']},性别:{student['sex']},班级:{student['class']}')
                    break
            else:
                print('查询失败,您输入的学号不存在!')
        case '6':
            print('*' * 10, '退出系统', '*' * 10)
            break
        case _:
            print('对不起,您选择的功能不存在')

    #  询问用户是否继续  输入0 继续
    is_back = int(input('请输入0返回:'))
    if is_back == 0:
        continue  # 继续下次循环
    else:
        break  # 结束循环
print('程序安全退出,欢迎下次使用!')
